package com.zhang.aloneway_springboot.controller;

import com.zhang.aloneway_springboot.jsonresult.JsonResult;
import com.zhang.aloneway_springboot.pojo.User;
import com.zhang.aloneway_springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.util.HtmlUtils;

import javax.servlet.http.HttpSession;
import java.util.Objects;

@Controller
public class LoginController {

    @Autowired
    private UserService userService;

    @CrossOrigin//跨域  由于在Vue的index.js中的proxyTable中进行了配置，所以后端能跨域访问前端
    @PostMapping("api/login")
    @ResponseBody                                   //为了保存登录状态，可以把用户信息保存到session中
    public JsonResult doLogin(@RequestBody User requestUser, HttpSession session){

        // 对 html 标签进行转义，防止 XSS 攻击
        //比如用户输入的username 是<html..张三> 等这种用在html页面中有特殊意义的符号时，
        //如果将这个结果返回给html页面，不怀好意的人可以能用这个功能写一些代码，破坏网页。
        //所以要将用户输入的username进行转义
        String username =  requestUser.getUsername();
        username = HtmlUtils.htmlEscape(username);

        //根据用户输入的username和password，去与数据库中进行比对，看有没有这么一个User
        //由于username经过了处理，所以不能直接用requestUser.getUsername来获取username
        User user = userService.getUser(username,requestUser.getPassword());
        if(user == null){
            return new JsonResult(400); //400错
        }else {
            session.setAttribute("user",user);  //把user对象放到session中
            return new JsonResult(200);//200对
        }

    }

}
